// pages/add_address/add_address.js
const app = getApp();
Page({

    /**
     * 页面的初始数据
     */
    data: {
        primary: app.globalData.primary, // 主题色
        ossPath: app.globalData.ossPath,
        selectAddress: false, // 选择地址的开关
        addressValue: [0, 0, 0],
        addressText: '', // 选中的地址
        areaList: {
            province_list: {},
            city_list: {},
            county_list: {}
        },
        province: '', // 选择的省份
        citys: '', // 选择的城市 
        regionId: '', // 选择的地区
        oldusername: '',
        username: '',
        oldPhone: '',
        phone: '',
        address: '', // 详细地址
        phoneMsg: '', // 手机格式错误提示
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        //设置主题色
        if (app.globalData.primary) {
            this.setData({ primary: app.globalData.primary })
            app.usePrimary(app.globalData.primary)
        }
        this.getRegionsProvince();
    },
    getResion: function(id) { // 查询地区数据
        id = id ? ('?id=' + id) : ''
        return new Promise(resolve => {
            wx.request({
                url: app.globalData.serverPath + '/regions' + id,
                success: ({
                    data
                }) => {
                    resolve(data)
                },
                fail: err => {
                    resolve(false)
                }
            })
        })
    },
    getRegionsProvince: function() { // 获取省份
        this.getResion().then(data1 => {
            data1 && (() => {
                this.getResion(data1[0].RegionId).then(data2 => {
                    data2 && (() => {
                        this.getResion(data2[0].RegionId).then(data3 => {
                            data3 && (() => {
                                this.data.areaList.province_list = data1;
                                this.data.areaList.city_list = data2;
                                this.data.areaList.county_list = data3;
                                this.setData({
                                    areaList: this.data.areaList,
                                    addressList: data1
                                })
                            })()
                        })
                    })()
                })
            })()
        })
    },
    filterRegion: function(data) { // 过滤地区数据
        var result = {};
        data.forEach(item => {
            result[item.RegionId] = item.RegionName
        })
        return result
    },
    checkedRegion: function(id) { // 检查储存数据是否有地址信息
        let isHave = false,
            data = this.data.addressList;
        for (let i = 0; i < data.length; i++) {
            if (id == data[i].RegionId) {
                isHave = data[i][data[i].RegionId] ? true : false
                return isHave
            }
        }
        return isHave
    },
    toggleSelectOpen: function() {
        this.setData({
            selectAddress: !this.data.selectAddress
        })
    },
    handleConfirm: function() {
        this.setData({
            selectAddress: false
        })
        if (!this.data.province && !this.data.citys && !this.data.regionId) {
            let str = this.data.areaList.province_list[0].RegionName + ' ' + this.data.areaList.city_list[0].RegionName + ' ' + this.data.areaList.county_list[0].RegionName
            this.setData({
                addressText: str
            })
        }
        if (!this.data.province) {
            this.setData({
                province: this.data.areaList.province_list[0].RegionId
            })
        }
        if (!this.data.citys) {
            this.setData({
                citys: this.data.areaList.city_list[0].RegionId
            })
        }
        if (!this.data.regionId) {
            this.setData({
                regionId: this.data.areaList.county_list[0].RegionId
            })
        }

    },
    changeAddress: function(e) { // 地址改变
        // var _this = this;
        let arr = e.detail.value;
        let province = this.data.areaList.province_list[arr[0]]; // 省
        let citys = this.data.areaList.city_list[arr[1]]; // 市
        let area = this.data.areaList.county_list[arr[2]]; // 区
        if (province && province.RegionId && this.data.province != province.RegionId) { // 选择省份
            // console.log(province.RegionId, this.data.province, province.RegionId)

            this.getResion(province.RegionId)
                .then(p => {
                    this.data.areaList.city_list = p;
                    this.setData({
                        province: province.RegionId,
                        areaList: this.data.areaList
                    })
                    this.getResion(this.data.areaList.city_list[0].RegionId).then(c => {
                        this.data.areaList.county_list = c;
                        if (c.length) {
                            this.setData({
                                regionId: this.data.areaList.county_list[0].RegionId,
                                addressText: `${province.RegionName} ${this.data.areaList.city_list[0].RegionName} ${this.data.areaList.county_list[0].RegionName}`,
                            })
                        } else {
                            this.setData({
                                regionId: this.data.areaList.city_list[0].RegionId,
                                addressText: `${province.RegionName} ${this.data.areaList.city_list[0].RegionName}`

                            })
                        }
                        this.setData({
                            citys: this.data.areaList.city_list[0].RegionId,
                            areaList: this.data.areaList
                        })

                    })
                })
        }
        if (citys && citys.RegionId && this.data.citys != citys.RegionId) { // 选择城市

            this.getResion(citys.RegionId)
                .then(c => {
                    this.data.areaList.county_list = c;
                    this.setData({
                        citys: citys.RegionId,
                        areaList: this.data.areaList
                    })
                })
        }
        if (area && area.RegionId) {
            this.setData({
                regionId: area.RegionId
            }); // 选择地区
        }
        if (province && citys && area) {
            this.setData({
                addressText: `${province.RegionName} ${citys.RegionName} ${area.RegionName}`,
            });
        } else if (area == undefined && citys && citys.RegionId) { // 没有地区使用市的RegionId
            this.setData({
                regionId: citys.RegionId
            });
            this.addressText = `${province.RegionName} ${citys.RegionName}`;
        }

    },
    selectAddress: function(e) { // 选择地址
        // console.log(e)
        this.toggleSelectOpen();
    },
    setUserName: function(e) { // 设置用户名
        this.setData({
            username: e.detail
        })
    },
    setPhone: function(e) { // 设置电话
        this.setData({
            phone: e.detail
        })
        console.log(e.detail)
        console.log(this.data.phoneMsg)
        if (this.data.phoneMsg) this.setData({
            phoneMsg: ''
        })
    },
    checkedPhone: function(e) { // 验证电话号
        if (/^1[3-9]\d{9}$/ig.test(e.detail.value)) {

        } else {
            this.setData({
                phoneMsg: '手机号格式错误'
            })
        }
    },
    setAddress: function(e) { // 设置详细地址
        this.setData({
            address: e.detail
        })
    },
    handleAdd: function(e) {
        if (!this.data.username) {
            wx.showToast({
                title: '请填写收货人姓名',
                icon: 'none'
            })
            return
        }
        if (!/^1[3-9]\d{9}$/ig.test(this.data.phone)) {
            wx.showToast({
                title: '请填写联系电话或输入正确的手机号码',
                icon: 'none'
            })
            return
        }
        if (!this.data.addressText) {
            wx.showToast({
                title: '请填写所在地区',
                icon: 'none'
            })
            return
        }
        if (!this.data.address) {
            wx.showToast({
                title: '请填写详细地址',
                icon: 'none'
            })
            return
        }
        var obj = {
            'ShipName': this.data.username,
            'CelPhone': this.data.phone,
            'TelPhone': '',
            'EmailAddress': '',
            'RegionId': this.data.regionId,
            'RegionFullName': this.data.addressText,
            'Address': this.data.address,
            'Zipcode': '',
            'IsDefault': false,
            'TeamNum': app.globalData.user.team
        };

        wx.request({
            url: app.globalData.serverPath + '/shipaddress',
            method: 'POST',
            header: app.globalData.header,
            data: obj,
            success: (res) => {
                if (res.data != "{}") {
                    wx.showToast({
                        title: '添加成功',
                        duration: 1000
                    })
                    setTimeout(() => {
                        wx.navigateBack()
                    }, 1000)
                }
            }
        })
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {

    }
})